
// 78.子集
class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        // 使用DFS来实现
        int n = nums.size();
        vector<vector<int>> ret{{}};
        function<void(int , vector<int>)> dfs = [&](int pos , vector<int> tmp)
        {
            // 选一个
            for(int i = pos; i < n ; i++)
            {
                tmp.push_back(nums[i]);
                dfs(i + 1 , tmp);
                ret.push_back(tmp);
                tmp.pop_back();
            }
        };
        dfs(0 , {});
        return ret;
    }
};